package persistance.dal;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import ucc.objects.TypeDeProduitDTO;
import biz.BizFactory;

public class TypeDeProduitFinderImpl implements TypeDeProduitFinder {

	private PreparedStatement q1;
	private PreparedStatement q2;
	private final String Q1 = "select * from caisse.types_de_produits where id_type_de_produit=?";
	private final String Q2 = "select * from caisse.types_de_produits";

	public TypeDeProduitFinderImpl() {
		this.q1 = DalBackEndServices.INSTANCE.prepare(Q1);
		this.q2 = DalBackEndServices.INSTANCE.prepare(Q2);
	}

	public TypeDeProduitDTO leTypeDeProduitNum(int id) {
		ResultSet rs = null;
		try {
			q1.setInt(1, id);
			rs = q1.executeQuery();
			TypeDeProduitDTO typeDeProduit = BizFactory.INSTANCE
					.createEmptyTypeDeProduitDTO();
			while (rs.next()) {
				typeDeProduit.setId(id);
				typeDeProduit.setDesignation(rs.getString("denomination"));
			}
			return typeDeProduit;
		} catch (SQLException e) {
			System.out.println("[E][SQL] : ");
			e.printStackTrace();
		}
		return null;
	}

	public ArrayList<TypeDeProduitDTO> lesTypesDeProduits() {
		ResultSet rs = null;
		ArrayList<TypeDeProduitDTO> listeTypesDeProduit = new ArrayList<TypeDeProduitDTO>();
		try {
			rs = q2.executeQuery();
			while (rs.next()) {
				TypeDeProduitDTO typeDeProduit = BizFactory.INSTANCE
						.createEmptyTypeDeProduitDTO();

				typeDeProduit.setId(rs.getInt("id_type_de_produit"));
				typeDeProduit.setDesignation(rs.getString("denomination"));

				listeTypesDeProduit.add(typeDeProduit);
			}
			return listeTypesDeProduit;
		} catch (SQLException e) {
			System.out.println("[E][SQL] : ");
			e.printStackTrace();
		}
		return null;
	}
}
